{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#逻辑与数据\n",
    "samples_and=[[0,0,0],[1,0,0],[0,1,0],[1,1,1]]\n",
    "#逻辑或数据\n",
    "samples_or=[[0,0,0],[1,0,1],[0,1,1],[1,1,1]]\n",
    "#逻辑异或数据\n",
    "samples_xor=[[0,0,0],[1,0,1],[0,1,1],[1,1,0]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def perceptron(samples):\n",
    "    w=np.array([1,2])\n",
    "    b=0\n",
    "    a=1\n",
    "    for i in range(10):\n",
    "        for j in range(4):\n",
    "            x=np.array(samples[j][:2])\n",
    "            y=1 if np.dot(w,x) + b > 0 else 0\n",
    "            d=np.array(samples[j][2])\n",
    "\n",
    "            delta_b=a*(d-y)\n",
    "            delta_w=a*(d-y)*x\n",
    "\n",
    "            print('epoch {} sample {} [{} {} {} {} {} {} {}]'.format(\n",
    "                i,j,w[0],w[1],b,y,delta_w[0],delta_w[1],delta_b))\n",
    "            w=w+delta_w\n",
    "            b=b+delta_b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "logocal and\n",
      "epoch 0 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 0 sample 1 [1 2 0 1 -1 0 -1]\n",
      "epoch 0 sample 2 [0 2 -1 1 0 -1 -1]\n",
      "epoch 0 sample 3 [0 1 -2 0 1 1 1]\n",
      "epoch 1 sample 0 [1 2 -1 0 0 0 0]\n",
      "epoch 1 sample 1 [1 2 -1 0 0 0 0]\n",
      "epoch 1 sample 2 [1 2 -1 1 0 -1 -1]\n",
      "epoch 1 sample 3 [1 1 -2 0 1 1 1]\n",
      "epoch 2 sample 0 [2 2 -1 0 0 0 0]\n",
      "epoch 2 sample 1 [2 2 -1 1 -1 0 -1]\n",
      "epoch 2 sample 2 [1 2 -2 0 0 0 0]\n",
      "epoch 2 sample 3 [1 2 -2 1 0 0 0]\n",
      "epoch 3 sample 0 [1 2 -2 0 0 0 0]\n",
      "epoch 3 sample 1 [1 2 -2 0 0 0 0]\n",
      "epoch 3 sample 2 [1 2 -2 0 0 0 0]\n",
      "epoch 3 sample 3 [1 2 -2 1 0 0 0]\n",
      "epoch 4 sample 0 [1 2 -2 0 0 0 0]\n",
      "epoch 4 sample 1 [1 2 -2 0 0 0 0]\n",
      "epoch 4 sample 2 [1 2 -2 0 0 0 0]\n",
      "epoch 4 sample 3 [1 2 -2 1 0 0 0]\n",
      "epoch 5 sample 0 [1 2 -2 0 0 0 0]\n",
      "epoch 5 sample 1 [1 2 -2 0 0 0 0]\n",
      "epoch 5 sample 2 [1 2 -2 0 0 0 0]\n",
      "epoch 5 sample 3 [1 2 -2 1 0 0 0]\n",
      "epoch 6 sample 0 [1 2 -2 0 0 0 0]\n",
      "epoch 6 sample 1 [1 2 -2 0 0 0 0]\n",
      "epoch 6 sample 2 [1 2 -2 0 0 0 0]\n",
      "epoch 6 sample 3 [1 2 -2 1 0 0 0]\n",
      "epoch 7 sample 0 [1 2 -2 0 0 0 0]\n",
      "epoch 7 sample 1 [1 2 -2 0 0 0 0]\n",
      "epoch 7 sample 2 [1 2 -2 0 0 0 0]\n",
      "epoch 7 sample 3 [1 2 -2 1 0 0 0]\n",
      "epoch 8 sample 0 [1 2 -2 0 0 0 0]\n",
      "epoch 8 sample 1 [1 2 -2 0 0 0 0]\n",
      "epoch 8 sample 2 [1 2 -2 0 0 0 0]\n",
      "epoch 8 sample 3 [1 2 -2 1 0 0 0]\n",
      "epoch 9 sample 0 [1 2 -2 0 0 0 0]\n",
      "epoch 9 sample 1 [1 2 -2 0 0 0 0]\n",
      "epoch 9 sample 2 [1 2 -2 0 0 0 0]\n",
      "epoch 9 sample 3 [1 2 -2 1 0 0 0]\n",
      "logical or\n",
      "epoch 0 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 0 sample 1 [1 2 0 1 0 0 0]\n",
      "epoch 0 sample 2 [1 2 0 1 0 0 0]\n",
      "epoch 0 sample 3 [1 2 0 1 0 0 0]\n",
      "epoch 1 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 1 sample 1 [1 2 0 1 0 0 0]\n",
      "epoch 1 sample 2 [1 2 0 1 0 0 0]\n",
      "epoch 1 sample 3 [1 2 0 1 0 0 0]\n",
      "epoch 2 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 2 sample 1 [1 2 0 1 0 0 0]\n",
      "epoch 2 sample 2 [1 2 0 1 0 0 0]\n",
      "epoch 2 sample 3 [1 2 0 1 0 0 0]\n",
      "epoch 3 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 3 sample 1 [1 2 0 1 0 0 0]\n",
      "epoch 3 sample 2 [1 2 0 1 0 0 0]\n",
      "epoch 3 sample 3 [1 2 0 1 0 0 0]\n",
      "epoch 4 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 4 sample 1 [1 2 0 1 0 0 0]\n",
      "epoch 4 sample 2 [1 2 0 1 0 0 0]\n",
      "epoch 4 sample 3 [1 2 0 1 0 0 0]\n",
      "epoch 5 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 5 sample 1 [1 2 0 1 0 0 0]\n",
      "epoch 5 sample 2 [1 2 0 1 0 0 0]\n",
      "epoch 5 sample 3 [1 2 0 1 0 0 0]\n",
      "epoch 6 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 6 sample 1 [1 2 0 1 0 0 0]\n",
      "epoch 6 sample 2 [1 2 0 1 0 0 0]\n",
      "epoch 6 sample 3 [1 2 0 1 0 0 0]\n",
      "epoch 7 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 7 sample 1 [1 2 0 1 0 0 0]\n",
      "epoch 7 sample 2 [1 2 0 1 0 0 0]\n",
      "epoch 7 sample 3 [1 2 0 1 0 0 0]\n",
      "epoch 8 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 8 sample 1 [1 2 0 1 0 0 0]\n",
      "epoch 8 sample 2 [1 2 0 1 0 0 0]\n",
      "epoch 8 sample 3 [1 2 0 1 0 0 0]\n",
      "epoch 9 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 9 sample 1 [1 2 0 1 0 0 0]\n",
      "epoch 9 sample 2 [1 2 0 1 0 0 0]\n",
      "epoch 9 sample 3 [1 2 0 1 0 0 0]\n",
      "logical xor\n",
      "epoch 0 sample 0 [1 2 0 0 0 0 0]\n",
      "epoch 0 sample 1 [1 2 0 1 0 0 0]\n",
      "epoch 0 sample 2 [1 2 0 1 0 0 0]\n",
      "epoch 0 sample 3 [1 2 0 1 -1 -1 -1]\n",
      "epoch 1 sample 0 [0 1 -1 0 0 0 0]\n",
      "epoch 1 sample 1 [0 1 -1 0 1 0 1]\n",
      "epoch 1 sample 2 [1 1 0 1 0 0 0]\n",
      "epoch 1 sample 3 [1 1 0 1 -1 -1 -1]\n",
      "epoch 2 sample 0 [0 0 -1 0 0 0 0]\n",
      "epoch 2 sample 1 [0 0 -1 0 1 0 1]\n",
      "epoch 2 sample 2 [1 0 0 0 0 1 1]\n",
      "epoch 2 sample 3 [1 1 1 1 -1 -1 -1]\n",
      "epoch 3 sample 0 [0 0 0 0 0 0 0]\n",
      "epoch 3 sample 1 [0 0 0 0 1 0 1]\n",
      "epoch 3 sample 2 [1 0 1 1 0 0 0]\n",
      "epoch 3 sample 3 [1 0 1 1 -1 -1 -1]\n",
      "epoch 4 sample 0 [0 -1 0 0 0 0 0]\n",
      "epoch 4 sample 1 [0 -1 0 0 1 0 1]\n",
      "epoch 4 sample 2 [1 -1 1 0 0 1 1]\n",
      "epoch 4 sample 3 [1 0 2 1 -1 -1 -1]\n",
      "epoch 5 sample 0 [0 -1 1 1 0 0 -1]\n",
      "epoch 5 sample 1 [0 -1 0 0 1 0 1]\n",
      "epoch 5 sample 2 [1 -1 1 0 0 1 1]\n",
      "epoch 5 sample 3 [1 0 2 1 -1 -1 -1]\n",
      "epoch 6 sample 0 [0 -1 1 1 0 0 -1]\n",
      "epoch 6 sample 1 [0 -1 0 0 1 0 1]\n",
      "epoch 6 sample 2 [1 -1 1 0 0 1 1]\n",
      "epoch 6 sample 3 [1 0 2 1 -1 -1 -1]\n",
      "epoch 7 sample 0 [0 -1 1 1 0 0 -1]\n",
      "epoch 7 sample 1 [0 -1 0 0 1 0 1]\n",
      "epoch 7 sample 2 [1 -1 1 0 0 1 1]\n",
      "epoch 7 sample 3 [1 0 2 1 -1 -1 -1]\n",
      "epoch 8 sample 0 [0 -1 1 1 0 0 -1]\n",
      "epoch 8 sample 1 [0 -1 0 0 1 0 1]\n",
      "epoch 8 sample 2 [1 -1 1 0 0 1 1]\n",
      "epoch 8 sample 3 [1 0 2 1 -1 -1 -1]\n",
      "epoch 9 sample 0 [0 -1 1 1 0 0 -1]\n",
      "epoch 9 sample 1 [0 -1 0 0 1 0 1]\n",
      "epoch 9 sample 2 [1 -1 1 0 0 1 1]\n",
      "epoch 9 sample 3 [1 0 2 1 -1 -1 -1]\n"
     ]
    }
   ],
   "source": [
    "if __name__=='__main__':\n",
    "    print('logocal and')\n",
    "    perceptron(samples_and)\n",
    "    print('logical or')\n",
    "    perceptron(samples_or)\n",
    "    print('logical xor')\n",
    "    perceptron(samples_xor)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 解释为什么这⾥的感知器代码⽆法完成【异或】功能??"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 答：因为异或是线性不可分的，单层的感知机无法线性分割异或的类别区域,多层感知机则可以解决这个问题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "% matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x2ca38add470>]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot([0,1],[0,1],'gD--')\n",
    "plt.plot([0,1],[1,0],'rv--')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
